// 对axios进行二次封装( 实例化axios对象,设置请求拦截器,设置响应拦截器 )

import axios from 'axios'
 
// 实例化axios对象
let service = axios.create({
    baseURL: process.env.REACT_APP_BASE_API, // 基准路基
    timeout: 10*1000 // 超时时间

})

// 设置请求拦截器
service.interceptors.request.use(
	(config)=>{
        // 一般情况下,在这里设置请求头( 服务端要求必须携带的 )
        // config.headers.Authorization = "Bearer" + " " + localStorage.getItem('token')
        config.headers.token =  localStorage.getItem('token')
        return config
    },
    
    (err)=>{
        return Promise.reject(err)
    }
)

// 设置响应拦截器
service.interceptors.response.use(
	(res)=>{
        return res
    },
    
    (err)=>{
        // 一般情况下,在这里处理服务端返回的错误码
        if( err.response.status == 401){
            alert('身份验证失败,登录过期,请重新登录');
            // 跳转到登录页
            // 删除过期的token
        }
        else if( err.response.status == 404){
            alert('访问路径有误')
        }
        else if( err.response.status == 500 ){
            alert('服务器内部错误')
        }
        return Promise.reject(err)
    }
)

export default service 
